//package com.zst.common.utils;
//
//import java.io.BufferedInputStream;
//import java.io.IOException;
//import java.io.OutputStream;
//import java.net.MalformedURLException;
//import java.net.URL;
//import java.net.URLConnection;
//import java.util.List;
//import java.util.zip.ZipEntry;
//import java.util.zip.ZipOutputStream;
//
///**
// * 文件打包工具
// * @author zst
// * @date 2020.11.30 16:14
// */
//public class FilePackageUtils {
//    /**
//     * URL连接建立超时时间
//     */
//    private static final int URLCONNECT_TIMEOUT = 1000;
//
//    /**
//     * 对指定url的文件进行zip打包，输出到指定的OutputStream中
//     * url必须是标准的URL格式，比如说http协议的url-->"http://127.0.0.1/a.txt"， 文件系统"file:/d:/a.txt"
//     * 压缩率越高消耗的CPU资源就越高，根据实际情况选择
//     *
//     * @param out 输出流
//     * @param fileUrls 文件URL列表
//     * @param level 压缩率，0~9由低到高，0表示不压缩
//     */
//    public static void zipPack(OutputStream out, List<String> fileUrls, int level) throws Exception {
//        if (out == null) {
//            throw new IllegalArgumentException("输出流不得为空");
//        }
//        if (fileUrls == null || fileUrls.isEmpty()) {
//            throw new IllegalArgumentException("文件url列表为空");
//        }
//        if (level > 9 || level < 0) {
//            throw new IllegalArgumentException("压缩率数值范围为0~9");
//        }
//
//        try (ZipOutputStream zipout = new ZipOutputStream(out)) {
//            zipout.setMethod(ZipOutputStream.DEFLATED);
//            zipout.setLevel(level);
//            int size = 0;
//            byte[] buf = new byte[10 * 1024];
//
//            BufferedInputStream bis = null;
//            for (String url : fileUrls) {
//                try {
//                    URL u = new URL(url);
//                    URLConnection conn = u.openConnection();
//                    conn.setConnectTimeout(URLCONNECT_TIMEOUT);
//                    conn.connect();
//
//                    bis = new BufferedInputStream(conn.getInputStream());
//                    zipout.putNextEntry(new ZipEntry(System.currentTimeMillis() + UrlUtils.extractFileName(url)));
//
//                    while ((size = bis.read(buf)) != -1) {
//                        zipout.write(buf, 0, size);
//                    }
//                    zipout.closeEntry();
//                } finally {
//                    if (bis != null) {
//                        bis.close();
//                    }
//                }
//            }
//        } catch (MalformedURLException e) {
//            throw new IllegalArgumentException("URL格式不正确", e);
//        } catch (IOException e) {
//            throw new IOException("URL无法连接", e);
//        }
//    }
//}
